using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using UwinEducation.Application.Dtos.Orders;
using UwinEducation.Shared.Enums;
using UwinEducation.Shared.Models;

namespace UwinEducation.Application.Common.Interfaces.Orders
{
    /// <summary>
    /// 订单服务接口
    /// </summary>
    public interface IOrderService
    {
        /// <summary>
        /// 获取订单
        /// </summary>
        Task<OrderDto> GetOrderByIdAsync(Guid id);

        /// <summary>
        /// 根据订单编号获取订单
        /// </summary>
        Task<OrderDto> GetOrderByNumberAsync(string orderNumber);

        /// <summary>
        /// 获取学生的订单列表
        /// </summary>
        Task<List<OrderDto>> GetStudentOrdersAsync(Guid studentId);

        /// <summary>
        /// 根据支付状态获取订单列表
        /// </summary>
        Task<List<OrderDto>> GetOrdersByPaymentStatusAsync(PaymentStatus paymentStatus);

        /// <summary>
        /// 获取订单分页列表
        /// </summary>
        Task<PagedResult<OrderDto>> GetPagedListAsync(OrderPageRequest pageRequest);

        /// <summary>
        /// 创建订单
        /// </summary>
        Task<OrderDto> CreateOrderAsync(CreateOrderDto createOrderDto);

        /// <summary>
        /// 更新订单
        /// </summary>
        Task<OrderDto> UpdateOrderAsync(OrderDto orderDto);

        /// <summary>
        /// 删除订单
        /// </summary>
        Task DeleteOrderAsync(Guid id);

        /// <summary>
        /// 更新订单支付状态
        /// </summary>
        Task UpdatePaymentStatusAsync(Guid orderId, PaymentStatus paymentStatus);


    }
} 